/**
 * Field styles reusable across **all** fields, including:
 * Text input, textarea, checkbox, radio, select, etc.
 */
@mixin input-base() {
  appearance: none;
  border-radius: theme('borderRadius.DEFAULT');
  color: $color-input-text;
  background-color: $color-input-bg;
  border: 1px solid $color-input-border;

  &:hover {
    border-color: $color-input-hover-border;
  }

  &[disabled],
  &[disabled]:hover {
    color: $color-input-disabled-text;
    background-color: $color-input-disabled-bg;
    border-color: $color-input-disabled-border;
    cursor: not-allowed;
  }

  // Only show the error state for the specific field in error.
  .w-field--error > .w-field__input > &,
  // Allow for one wrapper level within StreamField.
  .w-field--error > .w-field__input > * > &,
  // Ideally, individual widgets should show they are in error state with aria-invalid.
  &[aria-invalid='true'] {
    border-color: $color-input-error-border;
  }

  &::placeholder {
    color: $color-input-disabled-text;
  }
}
